{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第四步：再次调整参数n_estimators"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 导入工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "import seaborn as sns\n",
    "from matplotlib import pyplot as plt\n",
    "\n",
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.导入数据 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "dpath = \"./data/\"\n",
    "data = pd.read_csv(dpath + \"RentListingInquries_FE_train.csv\")\n",
    "# data_test = pd.read_csv(dpath + \"RentListingInquries_FE_test.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data train:  (16779, 228)\n"
     ]
    }
   ],
   "source": [
    "# 取三分之一的数据作为训练集\n",
    "data_train, data_val = train_test_split(data, test_size = 0.66,random_state = 0)\n",
    "print(\"data train: \",data_train.shape)\n",
    "# print(\"data test: \",data_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>1.677900e+04</td>\n",
       "      <td>1.677900e+04</td>\n",
       "      <td>1.677900e+04</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.0</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "      <td>16779.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.209071</td>\n",
       "      <td>1.537994</td>\n",
       "      <td>4.002467e+03</td>\n",
       "      <td>1.784611e+03</td>\n",
       "      <td>1.718569e+03</td>\n",
       "      <td>-0.328923</td>\n",
       "      <td>2.747065</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.009476</td>\n",
       "      <td>15.247631</td>\n",
       "      <td>...</td>\n",
       "      <td>0.002920</td>\n",
       "      <td>0.000298</td>\n",
       "      <td>0.184397</td>\n",
       "      <td>0.008940</td>\n",
       "      <td>0.000536</td>\n",
       "      <td>0.027773</td>\n",
       "      <td>0.001788</td>\n",
       "      <td>0.000894</td>\n",
       "      <td>0.000954</td>\n",
       "      <td>1.616485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.495244</td>\n",
       "      <td>1.115954</td>\n",
       "      <td>3.569312e+04</td>\n",
       "      <td>1.781989e+04</td>\n",
       "      <td>1.228794e+04</td>\n",
       "      <td>0.949059</td>\n",
       "      <td>1.442402</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.824854</td>\n",
       "      <td>8.341423</td>\n",
       "      <td>...</td>\n",
       "      <td>0.053963</td>\n",
       "      <td>0.017260</td>\n",
       "      <td>0.387819</td>\n",
       "      <td>0.099066</td>\n",
       "      <td>0.023154</td>\n",
       "      <td>0.164326</td>\n",
       "      <td>0.042248</td>\n",
       "      <td>0.029887</td>\n",
       "      <td>0.030866</td>\n",
       "      <td>0.625818</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.500000e+01</td>\n",
       "      <td>2.250000e+01</td>\n",
       "      <td>4.500000e+01</td>\n",
       "      <td>-4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.498000e+03</td>\n",
       "      <td>1.225000e+03</td>\n",
       "      <td>1.066667e+03</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.150000e+03</td>\n",
       "      <td>1.500000e+03</td>\n",
       "      <td>1.397500e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>4.100000e+03</td>\n",
       "      <td>1.850000e+03</td>\n",
       "      <td>1.962500e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>6.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>4.490000e+06</td>\n",
       "      <td>2.245000e+06</td>\n",
       "      <td>1.496667e+06</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          bathrooms      bedrooms         price  price_bathrooms  \\\n",
       "count  16779.000000  16779.000000  1.677900e+04     1.677900e+04   \n",
       "mean       1.209071      1.537994  4.002467e+03     1.784611e+03   \n",
       "std        0.495244      1.115954  3.569312e+04     1.781989e+04   \n",
       "min        0.000000      0.000000  4.500000e+01     2.250000e+01   \n",
       "25%        1.000000      1.000000  2.498000e+03     1.225000e+03   \n",
       "50%        1.000000      1.000000  3.150000e+03     1.500000e+03   \n",
       "75%        1.000000      2.000000  4.100000e+03     1.850000e+03   \n",
       "max        6.000000      8.000000  4.490000e+06     2.245000e+06   \n",
       "\n",
       "       price_bedrooms     room_diff      room_num     Year         Month  \\\n",
       "count    1.677900e+04  16779.000000  16779.000000  16779.0  16779.000000   \n",
       "mean     1.718569e+03     -0.328923      2.747065   2016.0      5.009476   \n",
       "std      1.228794e+04      0.949059      1.442402      0.0      0.824854   \n",
       "min      4.500000e+01     -4.000000      0.000000   2016.0      4.000000   \n",
       "25%      1.066667e+03     -1.000000      2.000000   2016.0      4.000000   \n",
       "50%      1.397500e+03      0.000000      2.000000   2016.0      5.000000   \n",
       "75%      1.962500e+03      0.000000      4.000000   2016.0      6.000000   \n",
       "max      1.496667e+06      2.000000     12.000000   2016.0      6.000000   \n",
       "\n",
       "                Day       ...                walk         walls           war  \\\n",
       "count  16779.000000       ...        16779.000000  16779.000000  16779.000000   \n",
       "mean      15.247631       ...            0.002920      0.000298      0.184397   \n",
       "std        8.341423       ...            0.053963      0.017260      0.387819   \n",
       "min        1.000000       ...            0.000000      0.000000      0.000000   \n",
       "25%        8.000000       ...            0.000000      0.000000      0.000000   \n",
       "50%       15.000000       ...            0.000000      0.000000      0.000000   \n",
       "75%       22.000000       ...            0.000000      0.000000      0.000000   \n",
       "max       31.000000       ...            1.000000      1.000000      1.000000   \n",
       "\n",
       "             washer         water    wheelchair          wifi       windows  \\\n",
       "count  16779.000000  16779.000000  16779.000000  16779.000000  16779.000000   \n",
       "mean       0.008940      0.000536      0.027773      0.001788      0.000894   \n",
       "std        0.099066      0.023154      0.164326      0.042248      0.029887   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max        2.000000      1.000000      1.000000      1.000000      1.000000   \n",
       "\n",
       "               work  interest_level  \n",
       "count  16779.000000    16779.000000  \n",
       "mean       0.000954        1.616485  \n",
       "std        0.030866        0.625818  \n",
       "min        0.000000        0.000000  \n",
       "25%        0.000000        1.000000  \n",
       "50%        0.000000        2.000000  \n",
       "75%        0.000000        2.000000  \n",
       "max        1.000000        2.000000  \n",
       "\n",
       "[8 rows x 228 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'Interest level')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd9a26c3780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(data_train.interest_level)\n",
    "plt.xlabel(\"Number of occurrences\")\n",
    "plt.ylabel(\"Interest level\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "样本分布不均，大部分是不感兴趣"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. 调用xgboost中的cv再次调整参数n_estimators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "kfold = StratifiedKFold(n_splits = 5, shuffle = True, random_state = 6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 分离 X 和 y\n",
    "y_train = data_train[\"interest_level\"]\n",
    "X_train = data_train.drop(\"interest_level\", axis = 1)\n",
    "\n",
    "# X_test = data_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def modelfit(alg, X_train, y_train, cv_folds = None, early_stopping_rounds = 10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param[\"num_class\"] = 3\n",
    "    \n",
    "    # 把数据转为DMatrix\n",
    "    xg_train = xgb.DMatrix(X_train, label = y_train)\n",
    "    \n",
    "    # 交叉验证，获取结果\n",
    "    cv_result = xgb.cv(xgb_param, xg_train, num_boost_round = alg.get_params()['n_estimators'], folds = cv_folds,\n",
    "                      metrics = \"mlogloss\", early_stopping_rounds = early_stopping_rounds)\n",
    "    \n",
    "    # 将结果保存为csv文件\n",
    "    cv_result.to_csv(\"2_nestimators.csv\", index_label = \"n_estimators\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 构建分类器\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate = 0.1,\n",
    "        n_estimators = 2000,  # 设置高上限\n",
    "        max_depth = 5,  # 第二轮调整获取的最优值\n",
    "        min_child_weight = 1,  # 第三轮调整获取的最优值\n",
    "        gamma = 0,\n",
    "        subsample = 0.8,  # 第四轮调整获取的最优值\n",
    "        colsample_bytree = 0.7,  # 第四轮调整获取的最优值\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective = \"multi:softprob\",\n",
    "        nthread = -1, # 多线程\n",
    "        seed = 6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 调用modelfit\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "cv_result = pd.read_csv(\"2_nestimators.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd9b36aca20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_means = cv_result[\"test-mlogloss-mean\"]\n",
    "test_stds = cv_result[\"test-mlogloss-std\"]\n",
    "\n",
    "train_means = cv_result[\"train-mlogloss-mean\"]\n",
    "train_stds = cv_result[\"train-mlogloss-std\"]\n",
    "\n",
    "x_axis = range(0, cv_result.shape[0])\n",
    "\n",
    "plt.errorbar(x_axis, test_means, yerr = test_stds, label = \"Test\")\n",
    "plt.errorbar(x_axis, train_means, yerr = train_stds, label = \"Train\")\n",
    "plt.title(\"XGBoost n_estimators vs Log loss\")\n",
    "plt.xlabel(\"n_estimators\")\n",
    "plt.ylabel(\"Log loss\")\n",
    "plt.savefig(\"n_estimators2_1.png\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd9b3e50e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cv_result1 = cv_result.iloc[20:]\n",
    "# plot\n",
    "test_means = cv_result1[\"test-mlogloss-mean\"]\n",
    "test_stds = cv_result1[\"test-mlogloss-std\"]\n",
    "\n",
    "\n",
    "train_means = cv_result1[\"train-mlogloss-mean\"]\n",
    "train_stds = cv_result1[\"train-mlogloss-std\"]\n",
    "\n",
    "x_axis = range(20, cv_result1.shape[0] + 20)\n",
    "        \n",
    "fig = plt.figure(figsize = (10, 10), dpi = 100)\n",
    "plt.errorbar(x_axis, test_means, yerr = test_stds, label = \"Test\")\n",
    "plt.errorbar(x_axis, train_means, yerr = train_stds, label = \"Train\")\n",
    "plt.title(\"XGBoost n_estimators vs Log loss\")\n",
    "plt.xlabel(\"n_estimators\")\n",
    "plt.ylabel(\"Log loss\")\n",
    "plt.savefig(\"n_estimators2_2.png\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "best n_estimators:  195\n"
     ]
    }
   ],
   "source": [
    "print(\"best n_estimators: \", cv_result.shape[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第二次调整，cv获取的最佳参数为195。感觉loss没降多少"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
